package com.verlet.springbootdemo.annotation;

import org.springframework.core.annotation.AliasFor;
import org.springframework.stereotype.Component;

import java.lang.annotation.Documented;
import java.lang.annotation.ElementType;
import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;
import java.lang.annotation.Target;

/**
 * 用于验证重复提交
 *
 * @author verlet
 * @date 2021-07-21 00:07
 */
@Target(ElementType.METHOD)
@Retention(RetentionPolicy.RUNTIME)
@Documented
public @interface Resubmit {

    @AliasFor("delaySeconds")
    long value() default 20;

    /**
     * 延迟时间 在延时多久后可以再次提交
     * @return 返回延迟时间可以提交
     */
    @AliasFor("value")
    long delaySeconds() default 20;

    /**
     * 设置缓存的前缀，redis为基础缓存中间件
     * @return 缓存的前缀
     */
    String cachePrefix() default "verlet:resubmit:";

    /**
     * 需要更具哪个值校验在规定时间内重复提交,当没有给定，取第一个参数
     * @return 给定重复提交的字段名
     */
    String cacheKey() default "";

}
